home *** CD-ROM | disk | FTP | other *** search
/ Inter.Net 55-1 / Inter.Net 55-1.iso / CBuilder / Setup / BCB / data.z / wintrust.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-02-09  |  10.9 KB  |  321 lines

  1. /************************************************************************
  2. *                                                                       *
  3. *   wintrust.h -- This module defines the 32-Bit WinTrust definitions   *
  4. *                 needed to build Trust Providers and / Subject         *
  5. *                 Interface Packages.                                   *
  6. *                                                                       *
  7. *   Copyright (c) 1990-1996, Microsoft Corp. All rights reserved.       *
  8. *                                                                       *
  9. ************************************************************************/
  10. #ifndef _WINTRUST_
  11. #define _WINTRUST_
  12. #pragma option push -b
  13.  
  14. #ifdef __cplusplus
  15. extern "C" {
  16. #endif
  17.  
  18. #ifdef __BORLANDC__
  19. #  include <pshpack8.h>
  20. #endif
  21.  
  22.  
  23. /***********************************************************************
  24. *                                                                      *
  25. * This section contains definitions related to:                        *
  26. *                                                                      *
  27. *                           WinTrust in general                        *
  28. *                                                                      *
  29. ************************************************************************/
  30.  
  31.  
  32. //
  33. // WinTrust Revisioning
  34. //
  35. #define WIN_TRUST_MAJOR_REVISION_MASK       0xFFFF0000
  36. #define WIN_TRUST_MINOR_REVISION_MASK       0x0000FFFF
  37. #define WIN_TRUST_REVISION_1_0              0x00010000
  38.  
  39.  
  40.  
  41.  
  42. /***********************************************************************
  43. *                                                                      *
  44. * This section contains definitions related to:                        *
  45. *                                                                      *
  46. *                           Subject Interface Packages                 *
  47. *                                                                      *
  48. ************************************************************************/
  49.  
  50. //
  51. // Allows passing of subject and type material.
  52. //
  53.  
  54. typedef struct _WIN_TRUST_SIP_SUBJECT {
  55.     GUID *                  SubjectType;
  56.     WIN_TRUST_SUBJECT       Subject;
  57. } WIN_TRUST_SIP_SUBJECT, *LPWIN_TRUST_SIP_SUBJECT;
  58.  
  59. //
  60. // Templates of services that must be EXPORTED by SIPs
  61. // FOR USE by Trust Providers (calling through WinTrust).
  62. //
  63.  
  64. typedef BOOL
  65. (WINAPI *LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO)(
  66.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,          // pointer to subject info
  67.     IN     LPWIN_CERTIFICATE                lpSignedData       // PKCS #7 Signed Data
  68.     );
  69.  
  70. typedef BOOL
  71. (WINAPI *LPWINTRUST_SUBJECT_ENUM_CERTIFICATES)(
  72.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,          // pointer to subject info
  73.     IN     DWORD                            dwTypeFilter,       // 0 or WIN_CERT_TYPE_xxx
  74.     OUT    LPDWORD                          lpCertificateCount,
  75.     IN OUT LPDWORD                          lpIndices,          // Rcvs WIN_CERT_TYPE_
  76.     IN     DWORD                            dwIndexCount
  77.     );
  78.  
  79. typedef BOOL
  80. (WINAPI *LPWINTRUST_SUBJECT_GET_CERTIFICATE)(
  81.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,
  82.     IN     DWORD                            dwCertificateIndex,
  83.     OUT    LPWIN_CERTIFICATE                lpCertificate,
  84.     IN OUT LPDWORD                          lpRequiredLength
  85.     );
  86.  
  87. typedef BOOL
  88. (WINAPI *LPWINTRUST_SUBJECT_GET_CERT_HEADER)(
  89.     IN     LPWIN_TRUST_SIP_SUBJECT          lpSubject,
  90.     IN     DWORD                            dwCertificateIndex,
  91.     OUT    LPWIN_CERTIFICATE                lpCertificateHeader
  92.     );
  93.  
  94. typedef BOOL
  95. (WINAPI *LPWINTRUST_SUBJECT_GET_NAME)(
  96.     IN     LPWIN_TRUST_SIP_SUBJECT      lpSubject,
  97.     IN     LPWIN_CERTIFICATE            lpSignedData,
  98.     IN OUT LPWSTR                       lpBuffer,
  99.     IN OUT LPDWORD                      lpRequiredLength
  100.     );
  101.  
  102. typedef DWORD
  103. (WINAPI *LPWINTRUST_PROVIDER_PING) (
  104.     IN      LPWSTR              lpProviderName,
  105.     IN      DWORD               dwClientParameter,
  106.     OUT     LPDWORD             lpdwServerReturnValue
  107.     );
  108.  
  109.  
  110. typedef struct _WINTRUST_SIP_DISPATCH_TABLE
  111. {
  112.     LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO   CheckSubjectContentInfo;
  113.     LPWINTRUST_SUBJECT_ENUM_CERTIFICATES    EnumSubjectCertificates;
  114.     LPWINTRUST_SUBJECT_GET_CERTIFICATE      GetSubjectCertificate;
  115.     LPWINTRUST_SUBJECT_GET_CERT_HEADER      GetSubjectCertHeader;
  116.     LPWINTRUST_SUBJECT_GET_NAME             GetSubjectName;
  117.  
  118. } WINTRUST_SIP_DISPATCH_TABLE, *LPWINTRUST_SIP_DISPATCH_TABLE;
  119.  
  120.  
  121.  
  122. //
  123. // Structure describing an individual SIP.
  124. //
  125. // This structure is passed back to WinTrust from a Subject Interface Package
  126. // initialization call.
  127. //
  128. typedef struct _WINTRUST_SIP_INFO {
  129.     DWORD                               dwRevision;
  130.     LPWINTRUST_SIP_DISPATCH_TABLE       lpServices;
  131.     DWORD                               dwSubjectTypeCount;
  132.     GUID *                              lpSubjectTypeArray;
  133. } WINTRUST_SIP_INFO, *LPWINTRUST_SIP_INFO;
  134.  
  135.  
  136.  
  137. //
  138. // SIP Intialization routine.
  139. // SIP DLLs are required to have a routine named:
  140. //
  141. //                          WinTrustSipInitialize.
  142. //
  143. // This initialization routine must have the following
  144. // definition:
  145. //
  146.  
  147. typedef BOOL
  148. (WINAPI *LPWINTRUST_SUBJECT_PACKAGE_INITIALIZE)(
  149.     IN     DWORD                            dwWinTrustRevision,
  150.     OUT    LPWINTRUST_SIP_INFO              *lpSipInfo
  151.     );
  152.  
  153.  
  154.  
  155.  
  156. /***********************************************************************
  157. *                                                                      *
  158. * This section contains definitions related to:                        *
  159. *                                                                      *
  160. *                           Trust Providers                            *
  161. *                                                                      *
  162. ************************************************************************/
  163.  
  164. //
  165. // Dispatch table of WinTrust services available to Trust Providers
  166. //
  167. // Client side...
  168.  
  169. typedef struct _WINTRUST_CLIENT_TP_DISPATCH_TABLE
  170. {
  171.     LPWINTRUST_PROVIDER_PING                ServerPing;
  172.     LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO   CheckSubjectContentInfo;
  173.     LPWINTRUST_SUBJECT_ENUM_CERTIFICATES    EnumSubjectCertificates;
  174.     LPWINTRUST_SUBJECT_GET_CERTIFICATE      GetSubjectCertificate;
  175.     LPWINTRUST_SUBJECT_GET_CERT_HEADER      GetSubjectCertHeader;
  176.     LPWINTRUST_SUBJECT_GET_NAME             GetSubjectName;
  177.  
  178. } WINTRUST_CLIENT_TP_DISPATCH_TABLE, *LPWINTRUST_CLIENT_TP_DISPATCH_TABLE;
  179.  
  180.  
  181. // Server side...
  182.  
  183. typedef struct _WINTRUST_SERVER_TP_DISPATCH_TABLE
  184. {
  185.     LPWINTRUST_SUBJECT_CHECK_CONTENT_INFO   CheckSubjectContentInfo;
  186.     LPWINTRUST_SUBJECT_ENUM_CERTIFICATES    EnumSubectCertificates;
  187.     LPWINTRUST_SUBJECT_GET_CERTIFICATE      GetSubjectCertificate;
  188.     LPWINTRUST_SUBJECT_GET_CERT_HEADER      GetSubjectCertHeader;
  189.     LPWINTRUST_SUBJECT_GET_NAME             GetSubjectName;
  190.  
  191. } WINTRUST_SERVER_TP_DISPATCH_TABLE, *LPWINTRUST_SERVER_TP_DISPATCH_TABLE;
  192.  
  193.  
  194. //
  195. // The following structures are passed by WinTrust to a
  196. // Trust Provider being initialized.
  197. //
  198. // Client side...
  199.  
  200. typedef struct _WINTRUST_CLIENT_TP_INFO {
  201.     DWORD                                   dwRevision;
  202.     LPWINTRUST_CLIENT_TP_DISPATCH_TABLE     lpServices;
  203. } WINTRUST_CLIENT_TP_INFO,  *LPWINTRUST_CLIENT_TP_INFO;
  204.  
  205. // Server side
  206. typedef struct _WINTRUST_SERVER_TP_INFO {
  207.     DWORD                                   dwRevision;
  208.     LPWINTRUST_SERVER_TP_DISPATCH_TABLE     lpServices;
  209. } WINTRUST_SERVER_TP_INFO,  *LPWINTRUST_SERVER_TP_INFO;
  210.  
  211.  
  212. //
  213. // Templates of Trust Provider services available to WinTrust
  214. //
  215. typedef LONG
  216. (WINAPI *LPWINTRUST_PROVIDER_VERIFY_TRUST) (
  217.     IN     HWND                             hwnd,
  218.     IN     GUID *                           ActionID,
  219.     IN     LPVOID                           ActionData
  220.     );
  221.  
  222. typedef VOID
  223. (WINAPI *LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE) (
  224.     IN     LPWIN_CERTIFICATE                lpCertificate
  225.     );
  226.  
  227. typedef VOID
  228. (WINAPI *LPWINTRUST_PROVIDER_CLIENT_UNLOAD) (
  229.     IN     LPVOID                           lpTrustProviderInfo
  230.     );
  231.  
  232. typedef VOID
  233. (WINAPI *LPWINTRUST_PROVIDER_SERVER_UNLOAD) (
  234.     IN     LPVOID                           lpTrustProviderInfo
  235.     );
  236.  
  237. //
  238. // Dispatch table of Trust provider services available for use by WinTrust
  239. //
  240. //  Client side...
  241.  
  242. typedef struct _WINTRUST_PROVIDER_CLIENT_SERVICES
  243. {
  244.     LPWINTRUST_PROVIDER_CLIENT_UNLOAD       Unload;
  245.     LPWINTRUST_PROVIDER_VERIFY_TRUST        VerifyTrust;
  246.     LPWINTRUST_PROVIDER_SUBMIT_CERTIFICATE  SubmitCertificate;
  247.  
  248. } WINTRUST_PROVIDER_CLIENT_SERVICES, *LPWINTRUST_PROVIDER_CLIENT_SERVICES;
  249.  
  250.  
  251. typedef struct _WINTRUST_PROVIDER_SERVER_SERVICES
  252. {
  253.     LPWINTRUST_PROVIDER_SERVER_UNLOAD       Unload;
  254.     LPWINTRUST_PROVIDER_PING                Ping;
  255.  
  256. } WINTRUST_PROVIDER_SERVER_SERVICES, *LPWINTRUST_PROVIDER_SERVER_SERVICES;
  257.  
  258.  
  259. //
  260. // This structure is passed back from the client-side Trust Provider
  261. // following initialization of that Trust Provider.
  262. //
  263. typedef struct _WINTRUST_PROVIDER_CLIENT_INFO {
  264.     DWORD                                   dwRevision;
  265.     LPWINTRUST_PROVIDER_CLIENT_SERVICES     lpServices;
  266.     DWORD                                   dwActionIdCount;
  267.     GUID *                                  lpActionIdArray;
  268. } WINTRUST_PROVIDER_CLIENT_INFO, *LPWINTRUST_PROVIDER_CLIENT_INFO;
  269.  
  270. //
  271. // This structure is passed back from the server-side trust provider following
  272. // initialization of that trust provider.
  273. //
  274. typedef struct _WINTRUST_PROVIDER_SERVER_INFO {
  275.     DWORD                                   dwRevision;
  276.     LPWINTRUST_PROVIDER_SERVER_SERVICES     lpServices;
  277. } WINTRUST_PROVIDER_SERVER_INFO, *LPWINTRUST_PROVIDER_SERVER_INFO;
  278.  
  279.  
  280.  
  281.  
  282.  
  283. //
  284. // Trust Provider Initialization Routines
  285. // Each Trust Provider DLL must have a client and server side initialization
  286. // routine.  The routines must be named:
  287. //
  288. //              WinTrustProviderClientInitialize()
  289. //      and
  290. //              WinTrustProviderServerInitialize()
  291. //
  292. // and must be defined to match the following templates...
  293. //
  294. typedef BOOL
  295. (WINAPI *LPWINTRUST_PROVIDER_CLIENT_INITIALIZE)(
  296.     IN     DWORD                                dwWinTrustRevision,
  297.     IN     LPWINTRUST_CLIENT_TP_INFO            lpWinTrustInfo,
  298.     IN     LPWSTR                               lpProviderName,
  299.     OUT    LPWINTRUST_PROVIDER_CLIENT_INFO      *lpTrustProviderInfo
  300.     );
  301.  
  302. typedef BOOL
  303. (WINAPI *LPWINTRUST_PROVIDER_SERVER_INITIALIZE) (
  304.     IN     DWORD                            dwWinTrustRevision,
  305.     IN     LPWINTRUST_SERVER_TP_INFO        lpWinTrustInfo,
  306.     IN     LPWSTR                           lpProviderName,
  307.     OUT    LPWINTRUST_PROVIDER_SERVER_INFO  *lpTrustProviderInfo
  308.     );
  309.  
  310.  
  311. #ifdef __BORLANDC__
  312. #  include <poppack.h>
  313. #endif
  314.  
  315. #ifdef __cplusplus
  316. }
  317. #endif
  318.  
  319. #pragma option pop
  320. #endif // _WINTRUST_
  321.